home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Games / MacGnuGo 0.5e / gnugo.src / undo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-10-22  |  654 b   |  33 lines  |  [TEXT/R*ch]

  1. #include "comment.header"
  2.  
  3. #define EMPTY 0
  4. #define WHITE 1
  5. #define BLACK 2
  6.  
  7. extern unsigned char p[19][19];
  8. extern int lastMove;
  9. extern int hcap, pass, mx, my;
  10. extern void initstuff();
  11.  
  12. undo(int n)
  13. {
  14.    int i, j, x, y, color, m;
  15.    int cont = 0;
  16.  
  17.    if (lastMove < n || lastMove < 2*hcap) return;
  18.    initstuff();
  19.    m = lastMove - n;    /* discard a pair of moves */
  20.    for (i=0;i<m;i++) {
  21.      getHistory(i, &color, &x, &y);
  22.      if (x >= 0) {
  23.        p[x][y] = color;
  24.        examboard((color == WHITE) ? BLACK : WHITE); /* remove dead pieces */
  25.      }
  26.      mx = x, my = y;
  27.    }
  28.    lastMove = m;
  29.    pass = (pass - n > 0) ? (pass - n) : 0;
  30. }
  31.  
  32. /* end undo */
  33.